#include "XmlInfoCaracteristiques.hpp"

XmlInfoCaracteristiques::XmlInfoCaracteristiques()
    : XmlInfoNom(), Sadisme( -1u ), Laideur( -1u ), Force( -1u ),
      Gourmandise( -1u )
{}

XmlInfoCaracteristiques::XmlInfoCaracteristiques( const QString& nomFichier,
						  const unsigned& id,
						  const QString& nom,
						  const unsigned& sadisme,
						  const unsigned& laideur,
						  const unsigned& force,
						  const unsigned& gourmandise )
  : XmlInfoNom( nomFichier, id, nom ), Sadisme( sadisme ), Laideur( laideur ),
    Force( force ), Gourmandise( gourmandise )
{}

XmlInfoCaracteristiques::XmlInfoCaracteristiques( const XmlInfoCaracteristiques&
						  caracteristiques )
  : XmlInfoNom( caracteristiques ),
    Sadisme( caracteristiques.sadisme() ),
    Laideur( caracteristiques.laideur() ),
    Force( caracteristiques.force() ),
    Gourmandise( caracteristiques.gourmandise() )
{}

XmlInfoCaracteristiques::~XmlInfoCaracteristiques()
{}

XmlInfoCaracteristiques& XmlInfoCaracteristiques::operator=( const XmlInfoCaracteristiques& caracteristiques )
{
  if ( &caracteristiques != this )
    {
      this -> XmlInfoNom::operator=( caracteristiques );

      Sadisme     = caracteristiques.sadisme();
      Laideur     = caracteristiques.laideur();
      Force       = caracteristiques.force();
      Gourmandise = caracteristiques.gourmandise();
    }

  return *this;
}

const unsigned& XmlInfoCaracteristiques::caracteristique( const EnumCaracteristique& car ) const
{
  if ( car == CarSadisme )
    return sadisme();
  else if ( car == CarLaideur )
    return laideur();
  else if ( car == CarForce )
    return force();
  else
    return gourmandise();
}

const unsigned& XmlInfoCaracteristiques::caracteristique( const unsigned& car ) const
{
  return caracteristique( static_cast< EnumCaracteristique >( car % 4 ) );
}

const unsigned& XmlInfoCaracteristiques::sadisme() const
{
  return Sadisme;
}

const unsigned& XmlInfoCaracteristiques::laideur() const
{
  return Laideur;
}

const unsigned& XmlInfoCaracteristiques::force() const
{
  return Force;
}

const unsigned& XmlInfoCaracteristiques::gourmandise() const
{
  return Gourmandise;
}

void XmlInfoCaracteristiques::setSadisme( const unsigned& sadisme )
{
  Sadisme = sadisme;
}

void XmlInfoCaracteristiques::setLaideur( const unsigned& laideur )
{
  Laideur = laideur;
}

void XmlInfoCaracteristiques::setForce( const unsigned& force )
{
  Force = force;
}

void XmlInfoCaracteristiques::setGourmandise( const unsigned& gourmandise )
{
  Gourmandise = gourmandise;
}
